package com.shujia.mr.hw.filter2;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;


/**
 * 需求：
 *      读取学生基本信息以及学生各科成绩数据，对学生各科成绩进行汇总并对基本信息做关联 并过滤出总分大于450同学
 *
 * Map阶段：
 *      1.读取学生基本信息和各科成绩，并对数据做切分
 *      2.对数据进行做标记
 *      3.将数据中的学生编号作为Key 其他信息作为Value写出
 *
 * Reduce阶段：
 *      1.接收相同Key的数据，并对数据标记进行判断
 *      2.如果为学生编号，那么可以对数据直接取出
 *      3.如果为各科成绩，那么可以对数据进行汇总
 *      4.得到学生基本信息和学生的总分可以对总分进行过滤
 *      5.将过滤后的数据写出
 *
 */
public class MyFilter2Mapper extends Mapper<LongWritable, Text,Text,Text> {
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context) throws IOException, InterruptedException {
        // 读取到一行数据，即可能是学生基本信息也可能是学生的总分
        String oneLine = value.toString();

        String[] split = oneLine.split(",");
        if (split.length == 3){
            // 学生的各科成绩
            context.write(new Text(split[0]),new Text(split[2]));
        }else{
            // 学生基本信息
            context.write(new Text(split[0]),new Text(split[1]+","+split[2]+","+split[3]+","+split[4]));
        }

    }
}
